package com.java.interview.i设计模式.策略模式;

/**
 * @Description:
 * @Auther: sixbing  QQ:414409451
 * @Date: 2018/11/4 12:12
 */
public class BubbleSorter<T> {
    /**
     * 抽象策略接口，可以有不同的实现
     */
    private SortHandler<T> sortHandler;

    public BubbleSorter(SortHandler<T> sortHandler) {
        this.sortHandler = sortHandler;
    }

    /**
     * 冒泡排序
     */
    public int sort(T array) {
        sortHandler.setArray(array);
        int length = sortHandler.getLength();
        int operations = 0;
        if (length <= 1) {
            return operations;
        }
        for (int i = 0; i < length - 1; i++) {
            for (int j = 0; j < length - i - 1; j++) {
                operations++;
                if (sortHandler.needSwap(j)) {
                    sortHandler.swap(j);
                }
            }
        }
        return operations;
    }
    //---------------------
//    作者：HansChen_
//    来源：CSDN
//    原文：https://blog.csdn.net/shensky711/article/details/53418034
//    版权声明：本文为博主原创文章，转载请附上博文链接！
}
